///**
// * 在一条单行道上，有 n 辆车开往同一目的地。目的地是几英里以外的target。
// *
// * 给定两个整数数组position和speed，长度都是 n ，其中position[i]是第 i 辆车的位置，speed[i]是第 i 辆车的速度(单位是英里/小时)。
// *
// * 一辆车永远不会超过前面的另一辆车，但它可以追上去，并与前车 以相同的速度 紧接着行驶。此时，我们会忽略这两辆车之间的距离，也就是说，它们被假定处于相同的位置。
// *
// * 车队是一些由行驶在相同位置、具有相同速度的车组成的非空集合。注意，一辆车也可以是一个车队。
// *
// * 即便一辆车在目的地才赶上了一个车队，它们仍然会被视作是同一个车队。
// *
// * 返回到达目的地的 车队数量 。
// *https://leetcode.cn/problems/car-fleet/
// * 思路：
// *分析
// * 我们首先对这些车辆按照它们的起始位置降序排序，并且用 (target - position) / speed 计算出每辆车在不受其余车的影响时，
// * 行驶到终点需要的时间。对于相邻的两辆车 S 和 F，F 的起始位置大于 S，如果 S 行驶到终点需要的时间小于等于 F，那么 S 一定会在终点前追上 F 并形成车队。
// * 这是因为在追上 F 之前，S 的行驶速度并不会减小，而 F 却有可能因为追上前面的车辆而速度减小，因此 S 总能在终点前追上 F。
// *算法
// *
// * 将车辆按照起始位置升序排序后，我们顺序扫描这些车辆。如果相邻的两辆车，前者比后者行驶到终点需要的时间短，那么后者永远追不上前者，
// * 即从后者开始的若干辆车辆会组成一个新的车队；如果前者不比后者行驶到终点需要的时间短，那么后者可以在终点前追上前者，并和前者形成车队。
// * 此时我们将后者到达终点的时间置为前者到达终点的时间。
// *
//
// *
//
// */
//
//import java.util.Arrays;
//import java.util.Comparator;
//
//public  class Car{
//    int position;
//    double time;
//    public Car(int p,double t){
//        this.position=p;
//        this.time=t;
//    }
//}
//class PositionComparator implements Comparator<Car>{
//    @Override
//    public int compare(Car o1, Car o2) {
//        return o1.position-o2.position;
//    }
//}
//class Solution {
//    public int carFleet(int target, int[] position, int[] speed) {
//        int len = position.length;
//        if (len == 1) {
//            return 1;
//        }
//        Car[] cars = new Car[len];
//        for (int i = 0; i < len; i++) {
//            cars[i] = new Car(position[i], (double) (target - position[i]) / speed[i]);
//        }
//        PositionComparator cmp = new PositionComparator();
//        Arrays.sort(cars, cmp);// 以初始位置排序，离出发点近的在前
//        int ans = 0;
//        int t = len;
//        while (--t > 0) {// 从最靠近终点的车往出发点看（从终点往后看）
//            if (cars[t].time < cars[t - 1].time) {
//                ans++;// 如果比后一辆车到达终点的耗时短，那么后车一定追不上，所以当前车独立为一个车队
//            } else {
//                cars[t - 1] = cars[t];// 如果比后一辆车慢或同时到达终点，那么将后车到达终点的时间置为本车到达终点的时间。（被当前车阻碍），
//                //之所以要让 cars[t-1]=cars[t] 的原因是，因为t-1追上t后速度就跟t一样了，但如果没有这条规则（t-1追上t后速度就跟t一样）
//                //t-1就有可能超过t，这样的话如果没有cars[t-1]=cars[t]的话，就可能出现，t-2能追上t，但追不上t-1的情况，
//                //但因为规则是t-1追上t后速度就跟t一样，所以加这cars[t-1]=cars[t]，便表示t-1追上t后就跟t同步，所以将t的数据给t
//
//            }
//
//        }
//        return ans + 1;
//    }
//}